// Object.prototype.propertyIsEnumerable 判断参数所指定属性是否可枚举

let p = {
    id: 1001 ,
    name: '朱某红' ,
    gender: '靓妹'
}

// 以 p 所指向的实例为原型创建Object类的一个新实例
let x = Object.create( p );
x.age = 18 ;

// 为 x 所指向的实例定义 address 属性并配置该属性
Object.defineProperty( x , 'address' , { value: '凯瑞大厦' , enumerable: false });

// 遍历 x 所指向实例的所有可枚举属性 ( 包括自有属性和从原型上继承的属性 )
for (let name in x) {
   console.log( name );
}

console.log( x.address ); // 对于不可枚举的属性来说，仍然可以访问的

console.log( '- - - - - - - - - - - - - - - - - - - -' );

// 获得 x 所指向实例的所有自有属性(不管它是否可以被枚举)
let names = Object.getOwnPropertyNames( x );
console.log( names );